package exception.config;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;

/**
 * @Author quan
 * @Description 统一异常处理机制
 * @Date 2023/7/29 15:33
 */

//@ControllerAdvice 表示控制器通知类
@ControllerAdvice
@ResponseBody
public class ErrorHandler {
    //@ExceptionHandler 是异常处理器
    //两个结合表示当出现异常的时候执⾏某个通知，也就是执⾏某个⽅法事件

    //当没有具体的异常时，就匹配这个异常
    @ExceptionHandler
    public Object error(Exception e){
        HashMap<String,Object> result = new HashMap<>();
        result.put("success",0);
        result.put("code",-1);//业务码
        result.put("msg","Exception...");
        return result;
    }
    //（1）表示捕获算数异常
    @ExceptionHandler
    public Object error(ArithmeticException e){
        HashMap<String,Object> result = new HashMap<>();
        result.put("success",0);
        result.put("code",-1);//业务码
        result.put("msg","ArithmeticException...");
        return result;
    }
    //（2）表示捕获空指针异常
    @ExceptionHandler
    public Object error(NullPointerException e){
        HashMap<String,Object> result = new HashMap<>();
        result.put("success",0);
        result.put("code",-1);//业务码
        result.put("msg","NullPointerException...");
        return result;
    }
}
